package org.dromara.generator.util;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DnnyFieldToSql {
    public static void main(String[] args) {
        File file=FileUtil.file("C:\\Users\\Administrator\\Desktop\\dnnyField.txt");
        List<String> lines = FileUtil.readLines(file,"gbk");
        Map<String,String> toSqlFileType = new HashMap();
        toSqlFileType.put("int","int NOT NULL DEFAULT 0  COMMENT '");
        toSqlFileType.put("double","decimal(12,2) NOT NULL DEFAULT 0  COMMENT '");
        toSqlFileType.put("string","varchar(32) NOT NULL DEFAULT ''  COMMENT '");
        StringBuffer sqlBuffer = new StringBuffer();
        sqlBuffer.append("create table tableName (\r\n");
        for (String str:lines) {
            str = str.replace("data[0].","");
            String[] fieldRow = str.split("\t",-1);
            if(fieldRow.length == 4){
                String fileName = fieldRow[0];//字段名
                String fileType = fieldRow[1];//字段类型
                String fileExample = fieldRow[2];//示例值
                String fileDesc = fieldRow[3];//字段描述
                //下划线转驼峰
                String st1 = StrUtil.toCamelCase("hello_word");
                //下划线转驼峰
                String st2 = StrUtil.toUnderlineCase("helloWord");
                sqlBuffer.append("\t").append(StrUtil.toUnderlineCase(fileName)).append(" ").append(toSqlFileType.get(fileType)).append(fileDesc).append("',\r\n");
            }
        }
        sqlBuffer.append("\ttenant_id varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',\r\n");
        sqlBuffer.append("\tcreate_dept bigint DEFAULT NULL COMMENT '创建部门',\r\n");
        sqlBuffer.append("\tcreate_by bigint DEFAULT NULL COMMENT '创建者',\r\n");
        sqlBuffer.append("\tcreate_time datetime DEFAULT NULL COMMENT '创建时间',\r\n");
        sqlBuffer.append("\tupdate_by bigint DEFAULT NULL COMMENT '更新者',\r\n");
        sqlBuffer.append("\tupdate_time datetime DEFAULT NULL COMMENT '更新时间',\r\n");

        sqlBuffer.append("\tPRIMARY KEY (id),\r\n\tINDEX idx1_parent_id(parent_id)\r\n").append(") COMMENT = 'XXXX表';\r\n");
        System.out.println(sqlBuffer.toString());
    }

    /**
     *  dnnyField.txt文件内容示例
     *
     data[0].storeId	int	123	店面ID
     data[0].storeName	string	123	店面名称
     data[0].totalMoney	double	123	总业绩=新品业绩+回收业绩+换新业绩+退换业绩+充值业绩
     data[0].bareTotalMoney	double	123	素金总业绩=素金新品业绩+素金回收业绩+素金换新业绩+素金退换业绩
     data[0].noBareTotalMoney	double	123	非素总业绩=非素新品业绩+非素回收业绩+非素换新业绩+非素退换业绩
     data[0].bareNewMoney	double	123	素金新品业绩
     data[0].noBareNewMoney	double	123	非素新品业绩
     data[0].bareRecycleMoney	double	123	素金回收业绩
     data[0].noBareRecycleMoney	double	123	非素回收业绩
     data[0].bareTradeInMoney	double	123	素金换新业绩
     data[0].notBareTradeInMoney	double	123	非素换新业绩
     data[0].bareRefundMoney	double	123	素金退换业绩
     data[0].notBareRefundMoney	double	123	非素退换业绩
     data[0].chargeMoney	double	123	会员充值业绩
     data[0].saleWeight	double	123	销售克重
     data[0].saleCount	int	123	销售件数
     data[0].onlyRecycleMoney	double	123	纯回收金额，有旧品没有新品的订单，统计旧品的小计金额(oldType=0)，查订单明细表(非业绩表)，孔经理这个奇葩强行要的
     */
}
